package ch03_oothinking.polymorphism;

import javassist.*;

import java.lang.reflect.Field;

/**
 * 多态分为编译时多态和运行时多态。
 * 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定
 * 多态性：父类或接口定义的引用变量可以指向子类或具体实现类的实例对象，提高了程序的拓展性
 * 必要条件：1、继承/实现；2、重写；3、对象造型（父类引用指向子类对象）
 * 实现形式：1、继承（多个子类对同一方法的重写）；2、接口（实现接口并覆盖接口中同一方法）
 * 多态程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定，而是在程序运行期间才确定。
 * 一个引用变量到底会指向哪个类的实例对象，该引用变量发出的方法调用到底是哪个类中实现的方法，必须在由程序运行期间才能决定。
 *
 * @author guodd
 * @version 1.0
 * @since 1.8
 */
public class Polymorphism {
    private Integer bb;


    public static void main(String[] args) throws Exception {
        ClassPool cp = ClassPool.getDefault();
        CtClass ctc = cp.get(Polymorphism.class.getName());
        CtField cf = new CtField(ClassPool.getDefault().get(String.class.getName()), "name", ctc);
        cf.setModifiers(Modifier.PRIVATE);
        ctc.addField(cf);
        ctc.toClass();
    }
}
